import axios from 'axios';
import { createStore } from 'vuex'
import ma from './modules/ma'
import mb from './modules/mb'

export default createStore({
  state: {
    version:'我是一个版本号',
    balance:100,
    num: 10
  },
  getters: { // 理解为vuex版本的计算属性
    total(state){
      return state.balance * state.num
    }
  },
  mutations: {  // 这是修改状态的唯一方式
    // mutation对于状态的修改是同步的
    setVersion(state,payload){
      // 第一个参数就是全局状态
      //  payload 就是传递的参数
      state.version = payload;

    },
    increment(state,payload){
      if(payload) return state.balance +=payload;
      state.balance++
    },
    setVersionAsync(state,payload){
      // 虽然可以改  但是不要在mutations当中执行异步的操作
      setTimeout(()=>{
        // 会导致在vuedevtools当中形成不了完整的记录
        state.version = payload
      },2000)
    },
    changeCt(){
      console.log('我是顶层的changeCt  ')
    }

  },
  actions: {
    // 如果需要进行异步操作 就需要使用actions当中的函数
     changeVersion(ctx,payload){
      // 第一个参数 ctx 就是当前的store实例自身
      // 第二个参数就是 触发当前函数的时候的传参
      setTimeout(()=>{
        ctx.commit('setVersion',payload)
      },2000)

     }
  },

  modules: {
      ma,
      mb
  }
})
